package main

import "fmt"

/*
break的作用结束离它最近的循环
*/
func main() {
	breakTest1()

	fmt.Println()
	breakTest2()

	fmt.Println()
	breakTest3()

	fmt.Println()
	continueTest1()

	fmt.Println()
	continueTest2()

	fmt.Println()
	continueTest3()

}

func continueTest3() {
	//双重循环：
label:
	for i := 1; i <= 5; i++ {
		for j := 2; j <= 4; j++ {
			if i == 2 && j == 2 {
				continue label
			}
			fmt.Printf("i: %v, j: %v \n", i, j)
		}
	}
	fmt.Println("-----ok")
}

func continueTest2() {
	//双重循环：
	for i := 1; i <= 5; i++ {
		for j := 2; j <= 4; j++ {
			if i == 2 && j == 2 {
				continue
			}
			fmt.Printf("i: %v, j: %v \n", i, j)
		}
	}
	fmt.Println("-----ok")
}

func continueTest1() {
	//功能：输出1-100中被6整除的数：
	//方式1：
	// for i := 1; i <= 100; i++ {
	// 	if i % 6 == 0 {
	// 		fmt.Println(i)
	// 	}
	// }
	//方式2：
	for i := 1; i <= 100; i++ {
		if i%6 != 0 {
			continue //结束本次循环，继续下一次循环
		}
		fmt.Println(i)
	}
}

func breakTest3() {
	//如果那个标签没有使用到 的话，那么标签不用加，否则报错：定义未使用
	//双重循环：
label2:
	for i := 1; i <= 5; i++ {
		for j := 2; j <= 4; j++ {
			fmt.Printf("i: %v, j: %v \n", i, j)
			if i == 2 && j == 2 {
				//直接跳出最外层的for(label2)
				break label2 //结束指定标签对应的循环
			}
		}
	}
	fmt.Println("-----ok")
}

func breakTest2() {
	//双重循环：
	for i := 1; i <= 5; i++ {
		for j := 2; j <= 4; j++ {
			fmt.Printf("i: %v, j: %v \n", i, j)
			if i == 2 && j == 2 {
				//break的作用结束离它最近的循环
				break
			}
		}
	}
}

func breakTest1() {
	//功能：求1-100的和，当和第一次超过300的时候，停止程序
	var sum int = 0
	for i := 1; i <= 100; i++ {
		sum += i
		fmt.Println(sum)
		if sum >= 300 {
			//停止正在执行的这个循环：
			break
		}
	}
	fmt.Println("-----ok")
}
